package 查找算法.线性查找;

/**
 * @Project: data-structure-and-algorithms
 * @Package: 查找算法.线性查找
 * @ClassName: LinearSearch
 * @Author: zhouyihe
 * @Date: 2025/11/17 11:42
 * @Description: 线性查找
 * 优点:
 * 实现极其简单，代码量少
 * 不需要预先排序数据
 * 适用于任何数据结构
 * 对于小规模数据集效率可以接受
 * 无额外空间要求
 * 缺点:
 * 时间复杂度为O(n)，当数据量大时效率低下
 * 不利用数据的任何特征（如有序性）来加速查找
 * 对于有序数据，不如二分查找高效
 * 随着数据规模增长，性能下降显著
 */
public class LinearSearch {
    public static int linearSearch(int[] arr, int target) {
        // 遍历数组
        for (int i = 0; i < arr.length; i++) {
            // 找到目标值，返回索引
            if (arr[i] == target) {
                return i;
            }
        }
        // 未找到目标值，返回-1
        return -1;
    }

    // 测试
    public static void main(String[] args) {
        int[] arr = {10, 20, 80, 30, 60, 50, 110, 100, 130, 170};
        int target = 110;

        int result = linearSearch(arr, target);
        if (result == -1) {
            System.out.println("元素 " + target + " 不存在于数组中");
        } else {
            System.out.println("元素 " + target + " 在数组中的索引为 " + result);
        }
    }

}
